با استفاده از داده های زلزله ها در ایران و جهان به سوالات زیر پاسخ دهید.
بارگذاری داده ها و کتابخانه ها:
library(readr)
library(dplyr)
library(ggmap)
library(highcharter)
library(stringr)
earth_q <- read_rds("data/historical_web_data_26112015.rds")۱. با استفاده از داده های historical_web_data_26112015.rds و استفاده از نمودار پراکنش سه بعدی بسته plotly نمودار طول، عرض و عمق زلزله ها را رسم نمایید. علاوه بر آن بزرگی هر نقطه را برابر بزرگی زمین لرزه قرار دهید.
library(plotly)
p <- plot_ly(data = earth_q, x = ~Latitude, y = ~Longitude, z = ~Depth, size = ~Magnitude,
marker = list(color = ~Magnitude, symbol = 'circle', sizemode = 'diameter', colorscale = c('#FFE1A1', '#683531'), showscale = TRUE), sizes = c(0.5, 7.8),
text = ~paste('Province:', Province, '<br>City:', City, '<br>Magnitude:', Magnitude)) %>%
add_markers() %>%
layout(scene = list(title = 'Iran Earthquakes between Sep. to Nov. 2015',
xaxis = list(title = 'Latitude', range = c(23, 40)),
yaxis = list(title = 'Longitude', range = c(40, 71)),
zaxis = list(title = 'Depth', range = c(0, 162))))
p۲. پویانمایی سونامی های تاریخی را بر حسب شدت بر روی نقشه زمین رسم نمایید.(از داده زلزله های بزرگ استفاده نمایید.)
برای این سوال از داده های بزرگ استفاده می کنیم، سپس مقادیر نامعلوم را داده حذف کرده و بر اساس مقادیر شدت، نمودار را رسم می کنیم.
library(gganimate)
disaster = read_delim("data/disaster.txt", "\t", escape_double = FALSE, trim_ws = TRUE) %>%
rename(lat = LATITUDE,long = LONGITUDE, magnit = INTENSITY,name = COUNTRY,year = YEAR) %>%
dplyr::select(lat, long, magnit, name, year)
nadis <- na.omit(disaster) %>% arrange(-magnit)
mapWorld <- borders("world", colour="gray50", fill="gray50") # create a layer of borders
p <- ggplot() + xlab("longitute") + ylab("latitude") + mapWorld + ggtitle("Earthquake Intensity")
p <- p + geom_point(aes(x = nadis$long, y = nadis$lat, size = nadis$magnit, frame = nadis$magnit), color="indianred1") + guides(size=guide_legend(title="Intensity"))
gganimate(p)
animation <- gganimate(p, "images/eq.gif")۳. نمودار چگالی دو بعدی زلزله های تاریخی ایران را رسم کنید.( از داده iran_earthquake.rds و لایه stat_density_2d استفاده نمایید).
برای حل این سوال ابتدا یک داده ی پرت را که خارج از ایران بود حذف می کنیم. سپس نمودار چگالی را بر روی نقاط رخداد زلزله می کشیم.
iran_eq <- read_rds("data/iran_earthquake.rds")%>% arrange(-Long)
iran_eq = iran_eq[-c(1),]
p <- ggplot(iran_eq, aes(x=Long, y=Lat)) +
geom_point() + stat_density_2d(aes(fill = ..level..), geom = "polygon") +
xlab("Longitude") + ylab("Latitude") +
guides(fill=guide_legend(title="Density")) +
scale_fill_distiller(palette=4, direction=-1) +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
ggtitle("Iran Earthquakes Density Plot")
p۴. احتمال اینکه در ایران در پنج سال آینده زلزله به بزرگی هفت ریشتر رخ دهد را محاسبه کنید. (از احتمال شرطی استفاده کنید.)
برای این سوال احتمال اینکه در پنج آینده زلزله ای بیشتر از ۷ ریشتر بیاید، به شرط اینکه دو سال زلزله ی بیشتر از ۷ ریشتر رخ نداده باشد را بررسی می کنیم.
iran_sig_eq <- iran_eq %>% filter(Mag >= 7) %>% arrange(desc(OriginTime))
last <- iran_sig_eq %>% slice(1)
diff = as.numeric(Sys.time() -last$OriginTime, units="days")
diff = diff %/% 365
diff_year = diff + 5
after_year = 1 # for first one
for (i in 1:nrow(iran_sig_eq)) {
if (i > 1) {
differ = as.numeric(iran_sig_eq[i-1,]$OriginTime - iran_sig_eq[i,]$OriginTime, units="days") %/% 365
if (differ >= diff_year) {
after_year = after_year + 1
}
}
}
after_year = after_year / nrow(iran_sig_eq)
after_two = 1 # for first one
for (i in 1:nrow(iran_sig_eq)) {
if (i > 1) {
differ = as.numeric(iran_sig_eq[i-1,]$OriginTime - iran_sig_eq[i,]$OriginTime, units="days") %/% 365
if (differ >= 2) {
after_two = after_two + 1
}
}
}
after_two = after_two / nrow(iran_sig_eq)
p = (after_year)/(after_two)
cat("Probability of earthquake in 5 years is", p)Probability of earthquake in 5 years is 0.5
۵. بر اساس داده های زلزله های بزرگ ابتدا تعداد و متوسط کشته زلزله ها را بر حسب کشور استخراج نمایید. سپس نمودار گرمایی تعداد کشته ها را بر روی کره زمین رسم نمایید.(مانند مثال زیر!)
برای حل این سوال ابتدا داده های NA را حذف می کنیم، سپس میانگین و مجموع تلفات زلزله ها را بدست می آوریم. برای نمایش کشورها بر روی نقشه نیاز است که نام کشورها را به نام کوتاه استاندارد آن ها تبدیل کنیم. به همین دلیل از کتابخانه ی countrycode استفاده می کنیم. سپس نمودار گرمایی را یک بار برای تعداد کشته ها و یک بار برای میانگین تعداد کشته ها توسط کتابخانه ی rworldmap می کشیم.
library(rworldmap)
library(countrycode)
disaster_sum <- read_delim("data/disaster.txt", "\t", escape_double = FALSE, trim_ws = TRUE) %>%
rename(lat = LATITUDE,long = LONGITUDE, magnit = INTENSITY,country = COUNTRY,year = YEAR, death=TOTAL_DEATHS) %>%
dplyr::select(lat, long, magnit, country, year, death)
disaster_sum = na.omit(disaster_sum)
disaster_sum <- disaster_sum %>% group_by(country) %>% summarise(fatality_sum = sum(death), fatality_mean = mean(death))
disaster_sum$country <- countrycode(disaster_sum$country, "country.name", "iso3c", warn = TRUE, nomatch = NA,
custom_dict = NULL, custom_match = NULL, origin_regex = FALSE)
knitr::kable(disaster_sum %>% arrange(-fatality_sum))| country | fatality_sum | fatality_mean |
|---|---|---|
| CHN | 1964956 | 11101.44633 |
| TUR | 806913 | 19680.80488 |
| IRN | 637473 | 20563.64516 |
| ITA | 353786 | 7075.72000 |
| AZE | 310087 | 77521.75000 |
| ARM | 187000 | 62333.33333 |
| PAK | 146342 | 24390.33333 |
| ECU | 111202 | 22240.40000 |
| TKM | 110001 | 55000.50000 |
| SYR | 105700 | 35233.33333 |
| PER | 84300 | 2218.42105 |
| PRT | 82319 | 11759.85714 |
| IRQ | 70200 | 17550.00000 |
| CHL | 70059 | 1893.48649 |
| IND | 58776 | 5877.60000 |
| TUN | 48000 | 24000.00000 |
| VEN | 43808 | 5476.00000 |
| ISR | 35100 | 11700.00000 |
| GRC | 29047 | 660.15909 |
| GTM | 23054 | 4610.80000 |
| DZA | 19021 | 1118.88235 |
| MAR | 16728 | 5576.00000 |
| TJK | 15529 | 5176.33333 |
| PHL | 13425 | 383.57143 |
| RUS | 12025 | 1717.85714 |
| NPL | 11771 | 3923.66667 |
| MEX | 10997 | 845.92308 |
| TWN | 10035 | 501.75000 |
| JPN | 6151 | 307.55000 |
| GLP | 5006 | 2503.00000 |
| HRV | 5005 | 1668.33333 |
| UZB | 4880 | 4880.00000 |
| IDN | 4481 | 128.02857 |
| YEM | 4060 | 1015.00000 |
| ESP | 2907 | 969.00000 |
| ALB | 2735 | 390.71429 |
| COL | 2420 | 242.00000 |
| SLV | 1328 | 265.60000 |
| EGY | 1138 | 379.33333 |
| PRT | 1122 | 561.00000 |
| MKD | 1083 | 361.00000 |
| AFG | 934 | 155.66667 |
| USA | 902 | 27.33333 |
| LCA | 900 | 900.00000 |
| PNG | 687 | 98.14286 |
| FRA | 650 | 650.00000 |
| ARG | 516 | 103.20000 |
| MMR | 503 | 251.50000 |
| KAZ | 451 | 225.50000 |
| GIN | 443 | 443.00000 |
| GEO | 280 | 93.33333 |
| NZL | 259 | 64.75000 |
| BGD | 200 | 200.00000 |
| USA | 168 | 84.00000 |
| BGR | 138 | 34.50000 |
| MNE | 131 | 131.00000 |
| CRI | 99 | 24.75000 |
| KGZ | 79 | 39.50000 |
| ETH | 70 | 35.00000 |
| SLB | 62 | 20.66667 |
| CYP | 42 | 21.00000 |
| MNG | 30 | 30.00000 |
| CAN | 28 | 28.00000 |
| GHA | 25 | 12.50000 |
| SVN | 22 | 11.00000 |
| ROU | 18 | 6.00000 |
| AUS | 12 | 12.00000 |
| ISL | 11 | 11.00000 |
| UKR | 11 | 11.00000 |
| CHE | 9 | 9.00000 |
| DOM | 8 | 4.00000 |
| SRB | 6 | 2.00000 |
| HND | 3 | 3.00000 |
| BEL | 2 | 2.00000 |
| DJI | 2 | 2.00000 |
| AUT | 1 | 1.00000 |
| BIH | 1 | 1.00000 |
| NLD | 1 | 1.00000 |
| ZAF | 1 | 1.00000 |
| THA | 1 | 1.00000 |
| TTO | 1 | 1.00000 |
heatMap <- joinCountryData2Map(disaster_sum, joinCode = "ISO3",
nameJoinColumn = "country")80 codes from your data successfully matched countries in the map
1 codes from your data failed to match with a country code in the map
165 codes from the map weren't represented in your data
mapCountryData(heatMap, nameColumnToPlot = "fatality_sum",
mapTitle="Earthquakes total fatality", oceanCol=gray(0.3),
colourPalette=c("cadetblue1","cadetblue3", "deepskyblue2", "deepskyblue3", "deepskyblue4", "dodgerblue4", "navy"), missingCountryCol = "white")heatMap <- joinCountryData2Map(disaster_sum, joinCode = "ISO3",
nameJoinColumn = "country")80 codes from your data successfully matched countries in the map
1 codes from your data failed to match with a country code in the map
165 codes from the map weren't represented in your data
mapCountryData(heatMap, nameColumnToPlot = "fatality_mean",
mapTitle="Earthquakes fatality rate", oceanCol=gray(0.3),
colourPalette=c("cadetblue1","cadetblue3", "deepskyblue2", "deepskyblue3", "deepskyblue4", "dodgerblue4", "navy"), missingCountryCol = "white")۶. با استفاده از داده لرزه های بزرگ و به وسیله طول، عرض، شدت، عمق مدلی برای پیش بینی تعداد کشته های زلزله بیابید.
برای مدلسازی از glm استفاده می کنیم. به علت آنکه توزیع ما توزیع پسین حاشیه ای دارد که نشان می دهد واریانس توزیع نرمال نامعلوم است، از خانواده ی inverse gamma استفاده می کنیم.
disaster_death <- read_delim("data/disaster.txt", "\t", escape_double = FALSE, trim_ws = TRUE) %>%
rename(lat = LATITUDE,long = LONGITUDE, magnit = INTENSITY, depth = FOCAL_DEPTH, country = COUNTRY,year = YEAR, death=TOTAL_DEATHS) %>%
dplyr::select(lat, long, magnit, depth, country, year, death)
# generalized regression model
glm_model <- glm(death ~ lat + long + magnit + depth, family = Gamma(link = "inverse"), data = disaster_death)
summary(glm_model)
Call:
glm(formula = death ~ lat + long + magnit + depth, family = Gamma(link = "inverse"),
data = disaster_death)
Deviance Residuals:
Min 1Q Median 3Q Max
-4.055 -3.273 -2.611 -1.587 7.681
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.158e-03 2.561e-04 4.524 7.90e-06 ***
lat -9.875e-07 2.824e-06 -0.350 0.7267
long -2.387e-07 4.959e-07 -0.481 0.6304
magnit -1.070e-04 2.406e-05 -4.445 1.12e-05 ***
depth 7.511e-06 3.933e-06 1.910 0.0568 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for Gamma family taken to be 14.9034)
Null deviance: 3965.6 on 429 degrees of freedom
Residual deviance: 3398.8 on 425 degrees of freedom
(5596 observations deleted due to missingness)
AIC: 5834
Number of Fisher Scoring iterations: 10
glm_model <- glm(death ~ magnit + depth, family = Gamma(link = "inverse"), data = disaster_death)
summary(glm_model)
Call:
glm(formula = death ~ magnit + depth, family = Gamma(link = "inverse"),
data = disaster_death)
Deviance Residuals:
Min 1Q Median 3Q Max
-3.895 -3.270 -2.619 -1.607 7.898
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.223e-03 2.326e-04 5.259 2.30e-07 ***
magnit -1.153e-04 2.197e-05 -5.247 2.44e-07 ***
depth 6.468e-06 1.967e-06 3.287 0.0011 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for Gamma family taken to be 15.12215)
Null deviance: 3965.6 on 429 degrees of freedom
Residual deviance: 3409.4 on 427 degrees of freedom
(5596 observations deleted due to missingness)
AIC: 5832.1
Number of Fisher Scoring iterations: 10
cat("Test GLM model using null and model deviances: ",1-pchisq(3965.6 - 3409.4, df=(429 - 427)))Test GLM model using null and model deviances: 0
مشاهده می کنیم که متغیر های طول و عرض جغرافیای تاثیری ندارند و عمق و شدت زلزله تاثیر زیادی بر روی تعداد کشته ها دارد. هم چنین با توجه به خروجی مشاهده می کنیم که خطای ما حول ۲ است. از طرفی آخرین خروجی به ما نشان می دهد که مدل ما از مدل intercept-only بهتر عملکرد و فرض صفر که یکسان بودن این مدل است باطل است.
۷. با استفاده از داده worldwide.csv به چند سوال زیر پاسخ دهید. تحقیق کنید آیا می توان از پیش لرزه، زلزله اصلی را پیش بینی کرد؟
برای حل این سوال، ابتدا از روی زمان زلزله، سال و ماه و روز وقوع زلزله را بدست می آوریم. سپس از روی محل وقوع زلزله، ناحیه ی وقوع زلزله(همانند کشور یا ایالت) را بدست می آوریم. سپس در نظر میگیریم که زلزله هایی که در یک محل و در یک ماه رخ می دهند، به یکدیگر مربوط هستند.(البته این روش خطایی برای زلزله های میان ماه ها دارد.) سپس باید پیش لرزه، پس لرزه و زلزله ی اصلی را تعیین کنیم. برای این موضوع زلزله ای که بیشتر شدت را دارد زلزله ی اصلی در نظر میگیریم. برای پیاده سازی این موضوع، بر اساس ناحیه و سال و ماه گروه بندی کرده و سپس شدت بیشترین زلزله و زمان وقوع آن را بدست می آوریم. حال اگر زلزله ای شدت کمتری از زلزله ی اصلی داشته باشد و پیش از زلزله ی اصلی رخ دهد، پیش لرزه است و اگر شدت کمتری از زلزله ی اصلی داشته باشد و پس از زلزله ی اصلی رخ دهد پس لرزه است.(در کد به پیش لرزه عدد ۱ و به پس لرزه عدد ۱- نسبت می دهیم.) در نهایت نیز احتمال اینکه زلزله ی اصلی، پیش لرزه ای داشته باشد را محاسبه می کنیم.
worldwide <- read_csv("data/worldwide.csv")
worldwide <- worldwide %>% mutate(year = as.numeric(format(time, format = "%Y")),
month = as.numeric(format(time, format = "%m")),
day = as.numeric(format(time, format = "%d")))
x <- str_split_fixed(worldwide$place, ",", 2) %>% as.data.frame(stringsAsFactors = F)
colnames(x) = c("", "location")
x <- x %>% select(location)
worldwide <- bind_cols(worldwide, x)
worldwide_fore <- worldwide %>% filter(location != "") %>%
select(time, year, month, day, latitude, longitude, depth, mag, location) %>%
group_by(year, month, location) %>% arrange(time) %>%
mutate(max_mag = max(mag))
x <- worldwide_fore %>% filter(mag == max_mag)
x$max_time <- x$time
s <- worldwide_fore %>% filter(mag != max_mag)
s <- s %>% full_join(x, by = c("max_mag", "month", "year", "location")) %>%
select(time = time.x, year, month, day = day.x, latitude = latitude.x, longitude = longitude.x,
depth = depth.x, mag = mag.x, location,max_mag, max_time = time.y)
worldwide_fore_aft <- bind_rows(x, s) %>% filter(!is.na(time)) %>%
mutate(diff = as.numeric(max_time - time, units="days"),
state = ifelse(diff > 0, 1, ifelse(
diff == 0, 0, -1
)))
prob = nrow(worldwide_fore_aft %>% filter(state == 1) %>%
distinct(year, month, location))/
nrow(worldwide_fore_aft %>% distinct(year, month, location))
cat("Probability of happening earthquake after foreshock is:", prob)Probability of happening earthquake after foreshock is: 0.5814448
همانطور که در نتیجه ی بالا می بینیم، در ۵۸ درصد مواقع پیش از زلزله ی اصلی، پیش لرزه رخ می دهد. از آنجایی که این احتمال بالا نیست، نمی توان با قطعیت گفت که زلزله ای که رخ داده پیش لرزه است و حتما زلزله ی اصلی را به همراه دارد.
۸. گزاره " آیا شدت زلزله به عمق آن بستگی دارد" را تحقیق کنید؟ (طبیعتا از آزمون فرض باید استفاده کنید.)
برای این سوال از تست کوریلیشن و تست استقلال chi استفاده می کنیم.
cor.test(worldwide$depth, worldwide$mag, method = 'spearman')
Spearman's rank correlation rho
data: worldwide$depth and worldwide$mag
S = 2.8439e+13, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.2344252
eq_matrix <- worldwide %>% select(depth, mag) %>% filter(depth > 0) %>% as.matrix()
chisq.test(eq_matrix)
Pearson's Chi-squared test
data: eq_matrix
X-squared = 534440, df = 59889, p-value < 2.2e-16
در تست کوریلیشن مشاهده می کنیم که احتمال اینکه این دو متغیر از دو توزیع غیرمرتبط آمده باشند، صفر است. پس فرض صفر باطل است و این دو متغیر به یکدیگر وابسته هستند. همچنین در تست استقلال نیز مشاهده می کنیم که احتمال استقلال دو متغیر بسیار کم بوده و در نتیجه فرض صفر باطل است و این دو متغیر از یکدیگر مستقل نیستند. پس فرض عدم ارتباط عمق و شدت زلزله رد می شود.
۹. میانگین سالانه زلزله ها را بر حسب کشور به دست آورید. آیا میتوان دلیلی در تایید یا رد تئوری هارپ ارائه کرد.
برای حل این سوال، ابتدا می بایست کشور محل رخداد زلزله را بدست بیاوریم. برای این کار از نقاط نقشه ی rworldmap استفاده می کنیم. سپس بر اسا کشور و سال گروهبندی کرده و تعداد زلزله ها و میانگین شدت زلزله ها را بدست می آوریم. در نهایت نمودار موزاییک زلزله ها را نمایش می دهیم.
library(sp)
coords2country = function(points)
{
countriesSP <- getMap(resolution='high')
#setting CRS directly to that from rworldmap
pointsSP = SpatialPoints(points, proj4string=CRS(proj4string(countriesSP)))
# use 'over' to get indices of the Polygons object containing each point
indices = over(pointsSP, countriesSP)
indices$ISO3 # returns the ISO3 code
}
s <- worldwide %>% select(longitude, latitude)
s$country <- coords2country(s)
s <- s %>% select(country)
worldwide <- bind_cols(worldwide, s)
worldwide <- worldwide %>% filter(!is.na(country)) %>%
mutate(year = as.numeric(format(time, format = "%Y")))
worldwide_sum <- worldwide %>% group_by(year, country) %>%
summarise(count = n(), mean_mag = mean(mag), mean_depth = mean(depth))
hchart(worldwide_sum %>% filter(year == 2015), "treemap", hcaes(x = country, value = count, color = mean_mag)) %>%
hc_title(text = "2015 Earthquakes", style = list(fontWeight = "bold"))hchart(worldwide_sum %>% filter(year == 2016), "treemap", hcaes(x = country, value = count, color = mean_mag)) %>%
hc_title(text = "2016 Earthquakes", style = list(fontWeight = "bold"))hchart(worldwide_sum %>% filter(year == 2017), "treemap", hcaes(x = country, value = count, color = mean_mag)) %>%
hc_title(text = "2017 Earthquakes", style = list(fontWeight = "bold"))hchart(worldwide_sum %>% filter(year == 2018), "treemap", hcaes(x = country, value = count, color = mean_mag)) %>%
hc_title(text = "2018 Earthquakes", style = list(fontWeight = "bold"))پروژه ی هارپ از سال ۲۰۱۵ منحل شده است. در صورتی که این پروژه تاثیر زیادی بر روی زلزله داشته باشد، باید با کاهش چشمگیر زلزله مواجه باشیم. اما مشاهده می کنیم که زلزله ها افزایش داشته اند. همچنین روند واضحی در این میان دیده نمی شود. در نتیجه نمی توانیم در مورد تاثیر پروژه ی هارپ نظری دهیم.
۱۰. سه حقیقت جالب در مورد زلزله بیابید.
زلزله خیزی قاره های مختلف
برای این بخش، قاره های مختلف را از نظر میانگین شدت زلزله و تعداد زلزله ها مقایسه می کنیم.
# a continents difference in earthquake magnitude
coords2continent = function(points)
{
countriesSP <- getMap(resolution='high')
pointsSP = SpatialPoints(points, proj4string=CRS(proj4string(countriesSP)))
indices = over(pointsSP, countriesSP)
indices$REGION # returns the continent (7 continent model)
}
disaster_ten <- disaster_death %>% filter(!is.na(long) & !is.na(lat))
s <- disaster_ten %>% select(long, lat)
s$continent <- as.character(coords2continent(s))
s <- s %>% select(continent)
disaster_ten <- bind_cols(disaster_ten, s)
disaster_ten_sun <- disaster_ten %>% group_by(continent) %>% filter(!is.na(continent) & !is.na(death) & !is.na(magnit)) %>%
summarise(count = n(), fatality = sum(death), mean_fatality = mean(death), mean_mag = mean(magnit))
disaster_ten_sun[3,1] = "Oceania"
disaster_ten_sun[6,1] = "South America"
hchart(disaster_ten_sun, "treemap", hcaes(x = continent, value = mean_mag, color = count)) %>%
hc_title(text = "Difference in Signifact Earthquakes Occurance in Continents", style = list(fontWeight = "bold"))همانطور که مشاهده می کنیم، شدت زلزله در قاره های مختلف با یکدیگر تفاوت محسوسی ندارد، اما تعداد زلزله های شدید در آسیا بسیار بیشتر است.
خطرناک ترین قاره ها از نظر زلزله
برای این سوال میزان کشته ها و میانگین کشته های زلزله ها را در هر قاره مشاهده می کنیم.
# b continents fatality
hcmap("custom/world-continents", data = disaster_ten_sun, value = "fatality",
joinBy = c("name", "continent"), name = "Continents Total Fatality",
dataLabels = list(enabled = TRUE, format = '{point.name}'),
borderColor = "#FAFAFA", borderWidth = 0.1,
tooltip = list(valueDecimals = 2)) %>%
hc_title(text = "Continents Total Fatality", style = list(fontWeight = "bold"))hcmap("custom/world-continents", data = disaster_ten_sun, value = "mean_fatality",
joinBy = c("name", "continent"), name = "Continents Mean Fatality",
dataLabels = list(enabled = TRUE, format = '{point.name}'),
borderColor = "#FAFAFA", borderWidth = 0.1,
tooltip = list(valueDecimals = 2)) %>%
hc_title(text = "Continents Fatality Average", style = list(fontWeight = "bold"))مشاهده می کنیم که آز آنجا که در آسیا جمعیت بیشتری زندگی می کند و تعداد زلزله های خطرناک بیشتری نسبت به سایر قاره ها دارد، میزان کشته های آن نیز بسیار زیاد است و خطرناک ترین قاره برای زندگی به شمار می آید.
بررسی استان های زلزله خیز ایران
در این سوال، میانگین شدت زلزله های استان های ایران را بررسی می کنیم.
# c Iran earthquakes
earth_q_sum <- earth_q %>% as.data.frame(stringsAsFactors = F)
earth_q_sum$Province = as.character(earth_q_sum$Province)
earth_q_sum$Province[earth_q_sum$Province == "semnan"] = as.character("Semnan")
earth_q_sum <- earth_q_sum %>% group_by(Province) %>% filter(!is.na(Magnitude)) %>% summarise(mean_mag = mean(Magnitude)) %>%
arrange(Province)
earth_q_sum <- earth_q_sum[-c(1,4,5,15,27,34,35), ]
earth_q_sum[4,1] = as.character("Chahar Mahall and Bakhtiari")
earth_q_sum[12,1] = as.character("Esfahan")
earth_q_sum[9,1] = as.character("Hamadan")
earth_q_sum[13,1] = as.character("Kerman")
earth_q_sum[15,1] = as.character("Razavi Khorasan")
earth_q_sum[17,1] = as.character("Kohgiluyeh and Buyer Ahmad")
earth_q_sum[26,1] = as.character("Sistan and Baluchestan")
s <- c(NA, 0)
names(s)<-c("Province","mean_mag")
earth_q_sum <- rbind(earth_q_sum, s)
hcmap("countries/ir/ir-all", data = earth_q_sum, value = "mean_mag",
joinBy = c("name", "Province"), name = "Iran Earthquakes",
dataLabels = list(enabled = TRUE, format = '{point.name}'),
borderColor = "#FAFAFA", borderWidth = 0.1) %>%
hc_title(text = "Iran Earthquake Magnitude Average", style = list(fontWeight = "bold"))همانطور که می بینیم، استان های جنوبی ایران زلزله خیز از سایر استان ها هستند.